import { IPSModelSortable } from '../ipsmodel-sortable';
import { IPSDEGroupDetail } from './ipsdegroup-detail';
import { IPSDataEntityObject } from './ipsdata-entity-object';
import { IPSSysSFPlugin } from '../res/ipssys-sfplugin';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEGroup
 */
export interface IPSDEGroup extends IPSDataEntityObject, IPSModelSortable {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * 代码名称2
   * @type {string}
   */
  codeName2: string;

  /**
   * 分组标记
   * @type {string}
   */
  groupTag: string;

  /**
   * 分组标记2
   * @type {string}
   */
  groupTag2: string;

  /**
   * 逻辑模式
   * @description 值模式 [实体组逻辑模式] {INITMODEL：注入模型、 SYNCMODEL：同步同构模型、 USER：用户自定义、 USER2：用户自定义2、 USER3：用户自定义3、 USER4：用户自定义4 }
   * @type {( string | 'INITMODEL' | 'SYNCMODEL' | 'USER' | 'USER2' | 'USER3' | 'USER4')}
   */
  logicMode: string | 'INITMODEL' | 'SYNCMODEL' | 'USER' | 'USER2' | 'USER3' | 'USER4';

  /**
   * 逻辑参数
   * @type {string}
   */
  logicParam: string;

  /**
   * 逻辑参数2
   * @type {string}
   */
  logicParam2: string;

  /**
   * 实体组成员集合
   *
   * @type {IPSDEGroupDetail[]}
   */
  getPSDEGroupDetails(): IPSDEGroupDetail[] | null;

  /**
   * 实体组成员集合
   *
   * @type {IPSDEGroupDetail[]}
   */
  get psDEGroupDetails(): IPSDEGroupDetail[] | null;

  findPSDEGroupDetail(objKey: any): IPSDEGroupDetail | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件
   *
   * @type {IPSSysSFPlugin}
   */
  get psSysSFPlugin(): IPSSysSFPlugin | null;

  /**
   * 后台扩展插件（必须存在）
   *
   * @type {IPSSysSFPlugin}
   */
  getPSSysSFPluginMust(): IPSSysSFPlugin;
}
